package io.jt808.proto.cmd;

import io.norland.buffer.AutoBuffer;
import io.norland.annotations.Proto;
import io.norland.proto.IProto;
import lombok.Data;

/**
 * 文本信息下发(0x8300)
 */
@Proto("8300")
@Data
public class JT8300 implements IProto {
    /**
     * 标志
     */
    private byte flag;
    /**
     * 文本信息
     */
    private String text;

    public byte[] writeToBytes() {
        AutoBuffer buff = new AutoBuffer();
        buff.writeByte(flag);
        buff.writeGbkString(text);
        return buff.array();
    }

    public void readFromBuf(AutoBuffer buff) {
        flag = buff.readByte();
        text = buff.readGbkString();
    }

    /**
     * 是否紧急
     */
    public boolean isUrgent() {
        return (flag & 1) != 0;
    }

    /**
     * 是否终端显示器显示
     */
    public boolean isTerminalDisplay() {
        return (flag & 1 << 2) != 0;
    }

    /**
     * 是否终端TTS续读
     */
    public boolean isTerminalTTS() {
        return (flag & 1 << 3) != 0;
    }

    /**
     * 是否广告显示
     */
    public boolean isAdDisplay() {
        return (flag & 1 << 4) != 0;
    }

    /**
     * true CAN故障码信息 false 中心导航信息
     */
    public boolean isCAN() {
        return (flag & 1 << 5) != 0;
    }

//    public static void main(String[] args) {
//        byte[] bytes = new byte[]{
//                (byte) 0xFF,
//                (byte) 0xBA, (byte) 0xBD, (byte) 0xD4, (byte) 0xBA,
//                0x38
//        };
//        JT8300 jt8300 = new JT8300();
//        jt8300.readFromBuf(new AutoBuffer(bytes));
//        System.out.println(new String(bytes).equals(new String(jt8300.writeToBytes())));
//    }
}
